/**
 * 文件转换模块
 * 提供文件转换相关的功能
 */

/**
 * 将文件转换为base64格式
 * @param {File|Object} file - 文件对象或包含raw属性的文件对象
 * @returns {Promise<string>} - base64字符串
 */
export const convertFileToBase64 = (file) => {
  return new Promise((resolve, reject) => {
    console.log('开始转换文件到base64:', file.name);
    
    if (!file.raw && !(file instanceof File)) {
      console.warn('文件对象无效，无法转换为base64');
      return resolve(file);
    }
    
    const reader = new FileReader();
    const fileObj = file.raw || file;
    
    reader.readAsDataURL(fileObj);
    
    // 设置超时
    const timeoutId = setTimeout(() => {
      console.error('转换base64超时');
      reject(new Error('读取文件超时'));
    }, 30000); // 30秒超时
    
    reader.onload = () => {
      clearTimeout(timeoutId);
      
      // 存储base64结果
      file.base64 = reader.result;
      
      // 如果没有URL，则从base64创建
      if (!file.url) {
        file.url = reader.result;
      }
      
      console.log('文件转换base64成功:', file.name, '长度:', reader.result.length);
      resolve(reader.result);
    };
    
    reader.onerror = (error) => {
      clearTimeout(timeoutId);
      console.error('读取文件失败:', error);
      reject(error);
    };
  });
};

export default {
  convertFileToBase64
}; 